<HTML>
<HEAD>
<TITLE>
IndiceArbolB.h
</TITLE>
</HEAD>
<BODY>
<PRE>
<font color="green">/*
 * IndiceArbolB.h
 *
 *  Created on: 15/10/2009
 *      Author: andres
 */</font>

<font color="blue">#ifndef</font> INDICEARBOLB_H_
<font color="blue">#define</font> INDICEARBOLB_H_

<font color="green">/*
 *
 */</font>
<font color="blue">#include</font> <font color="maroon">"EstrategiaIndice.h"</font>
<font color="blue">#include</font> <font color="maroon">"NodoArbolB.h"</font>

<font color="blue">class</font> NodoArbolB;

<font color="blue">class</font> IndiceArbolB<font color="black">:</font> <font color="blue">public</font> EstrategiaIndice
<font color="black">{</font>
<font color="blue">public</font><font color="black">:</font>
    <font color="green">/**
      * Constructor Indice Primario
      *
      * Crea un Indice primario a con el key indicado
      * tira IndexException si la key es NULL
      *
      * @author andres
      *
      * @param PrymaryKey* primary key del dato a indexar
      *
      */</font>
    IndiceArbolB<font color="black">(</font>PrimaryKey<font color="black">*</font> primaryKey<font color="black">)</font> <font color="blue">throw</font><font color="black">(</font>IndexException<font color="black">)</font>;

    <font color="green">/**
      * Constructor Indice Secundario
      *
      * Crea un indice Secundario a partir del indice secundario dado
      * tira IndexException si las key o el indice es NULL
      *
      * @author andres
      *
      * @param SecundaryKey* key que se utiliza en el indice
      *
      * @param PrimaryKey* key para buscar en el indice primario
      *
      * @param EstrategiaIndice* Indice primario en el cual buscar
      *
      */</font>
    IndiceArbolB<font color="black">(</font>PrimaryKey<font color="black">*</font> PrimaryKey, SecondaryKey<font color="black">*</font> secondaryKey, EstrategiaIndice<font color="black">*</font> indicePrimario<font color="black">)</font> <font color="blue">throw</font><font color="black">(</font>IndexException<font color="black">)</font>;


    virtual ~IndiceArbolB<font color="black">(</font><font color="black">)</font>;

    <font color="green">/**
      * Cargar
      *
      * Carga el dato en el indice
      *
      * En caso de inidce primario si el identificador esta repetido
      * tira IndexException
      *
      * @author andres
      *
      * @param void* dato serializado a agregar en el indice
      *
      * @param int id en que esta guardado el dato
      *
      */</font>
    virtual <font color="blue">void</font> Cargar<font color="black">(</font><font color="blue">char</font><font color="black">*</font> datoSerializadoACargar, <font color="blue">unsigned</font> <font color="blue">int</font> id<font color="black">)</font> <font color="blue">throw</font><font color="black">(</font>IndexException<font color="black">)</font>;


    <font color="green">/**
      * Buscar
      *
      * Busca todos los datos indexados con la clave dada
      *
      * @author andres
      *
      * @param std::string clave que se busca en el indice
      *
      * @return std::vector&#60;int&#62; vector con los id de los resultados encontrados
      *
      */</font>
    virtual std<font color="black">:</font><font color="black">:</font>vector<font color="black">&#60;</font><font color="blue">unsigned</font> <font color="blue">int</font><font color="black">&#62;</font> Buscar<font color="black">(</font>std<font color="black">:</font><font color="black">:</font>string claveABuscar<font color="black">)</font>;


    <font color="green">/**
      * Modificar
      *
      * cambia los datos en el indice
      *
      * @author andres
      *
      * @param DatoSerializadoSinModificar datos serializados sin modificar
      *
      * @param DatosSerializadoModificado datos serializados modificados
      *
      * @param idModificado id de los datos modificados
      *
      */</font>
    virtual <font color="blue">void</font> Modificar<font color="black">(</font><font color="blue">char</font><font color="black">*</font> DatoSerializadoSinModificar, <font color="blue">char</font><font color="black">*</font> DatoSerializadoModificado, <font color="blue">unsigned</font> <font color="blue">int</font> idModificado<font color="black">)</font>;

    <font color="green">/**
      * Eliminar
      *
      * Elimina el dato del indice
      *
      * @author andres
      *
      * @param DatoSeralizadoAEliminar
      *
      */</font>
    virtual <font color="blue">void</font> Eliminar<font color="black">(</font><font color="blue">char</font><font color="black">*</font> DatoSerializadoAEliminar<font color="black">)</font>;






<font color="blue">private</font><font color="black">:</font>

    Informacion<font color="black">*</font> CargarInformacion<font color="black">(</font><font color="blue">char</font><font color="black">*</font> datoSerializadoACargar, <font color="blue">unsigned</font> <font color="blue">int</font> id<font color="black">)</font>;

    NodoArbolB<font color="black">*</font> raiz;


<font color="black">}</font>;

<font color="blue">#endif</font> <font color="green">/* INDICEARBOLB_H_ */</font>

</PRE>
</BODY>
</HTML>
